' Agressive Balls ' Juli 1987 MS-Soft ' Michael Schönborn SCREEN 2,328,260,5,1 WINDOW 2,"AGRESSIVE BALLS FANG AGRESSIVE BALLS",,2,2 pi=3.14159 FOR f=0 TO 30 PALETTE f,0,0,5/16 NEXT PALETTE 31,1,1,1 DIM h0%(83),h1%(83),h2%(83),h3%(83) 'FIGUREN DIM h4%(83),h5%(83),h6%(83),h7%(83),h8%(83) DIM h9%(83),h10%(83),h11%(83),h12%(83) COLOR 31,30:CLS GOSUB defin welle CLS RESTORE farben FOR f=0 TO 31 READ r,g,b:PALETTE f,r/16,g/16,b/16 NEXT farben: DATA 0,0,12,0,0,5,0,0,5,0,0,5 DATA 1,2,12,3,3,13,4,4,14,6,6,15 DATA 0,0,5,0,0,0,0,0,0 DATA 0,0,5,0,0,12,1,2,12,3,3,13,4,4,14,6,6,15 DATA 7,0,15,11,3,14,13,7,14,10,0,0,11,2,2 DATA 12,3,3,14,5,5,15,8,8,0,8,0 DATA 1,10,1,2,11,2,4,13,4,6,15,6 DATA 0,0,5,8,9,0 MENU 1,0,1,"Balls" MENU 1,2,1,"MS-SOFT" MENU 1,3,1,"c 1987 MENU 2,0,1,"Musik" MENU 2,2,1,"Musik an" MENU 2,3,1,"Musik aus" ON MENU GOSUB menue MENU ON bild hi$="MS":hsc=100:f1=9 start: leb=5:s=0:sc=0 beginn: xs=16:ys=160 xa1=288:ya1=16:yya1=ya1:xxa1=xa1 xa2=288:ya2=224:xxa2=xa2:yya2=ya2 GOSUB zeichnen COLOR 16,0 LOCATE 1,1:PRINT "PUNKTE: LEBEN: ";hi$;": " leben (leb):score (sc):high(hsc) pu=0:start=13 RESTORE musik ON TIMER(4) GOSUB musik TIMER ON GET (xa1,ya1)-(xa1+15,ya1+15),h9% GET (xa2,ya2)-(xa2+15,ya2+15),h10% spielerfig GOSUB angreifer1 GOSUB angreifer2 loop1: GOSUB angreiferbew GOSUB angreiferbew2 GOSUB spieler IF pu=max THEN schluss GOTO loop1 angreiferbew: xsa=(xa1-xs):ysa=(ya1-ys) IF ABS(xsa)<=16 AND ABS(ysa)<=16 THEN GOTO zusammenstoss IF ysa=0 THEN GOTO an1 y=ya1-2*SGN(ysa) p1=POINT (xa1,y-15*(SGN(ysa)<0)) p2=POINT (xa1+15,y-15*(SGN(ysa)<0)) IF p10),ya1) p2=POINT (x-15*(SGN(xsa)>0),ya1+15) IF p10)) p2=POINT (xa2+15,y-15*(SGN(ysa)>0)) IF p1hsc THEN hsc=sc LOCATE 4,3: PRINT "Sie haben den Highscore":PRINT " verbessert!" LOCATE 6,3:INPUT "Wie lauten Ihre Initialen";hi$ hi$=UCASE$(LEFT$(hi$,2)) LOCATE 9,3 PRINT "Neuer Highscore (";USING"######";hsc; PRINT ")" LOCATE 11,11:PRINT "von ";hi$;" !" END IF LOCATE 14,1:PRINT "Wollen Sie es noch einmal" PRINT "versuchen"; INPUT"(j/n)";j$:j$=UCASE$(j$) IF j$="J" THEN GOTO start LOCATE 17,12:PRINT "ENDE" END defin: LOCATE 12,11:PRINT "Bitte warten!" RESTORE rohr 'Rohr horizontal, vertikal, Ecken x=0 FOR f=12 TO 16 READ i FOR j=1 TO i LINE (x,0)-(x,15),f LINE (15-x,0)-(15-x,15),f x=x+1 NEXT NEXT GET (0,0)-(15,15),h0% RESTORE rohr x=0 FOR f=12 TO 16 READ i FOR j=1 TO i LINE (0,x)-(15,x),f LINE (0,15-x)-(15,15-x),f x=x+1 NEXT NEXT GET (0,0)-(15,15),h1% RESTORE rohr x=0 FOR f=12 TO 16 READ i LINE (x,x)-(15,15),f,bf x=x+i NEXT RESTORE rohr2 FOR f=16 TO 12 STEP -1 READ i LINE (x,x)-(15,15),f,bf x=x+i NEXT GET (0,0)-(15,15),h2% RESTORE rohr x=0 FOR f=12 TO 16 READ i LINE (15,0)-(x,15-x),f,bf x=x+i NEXT RESTORE rohr2 FOR f=16 TO 12 STEP -1 READ i LINE (15,0)-(x,15-x),f,bf x=x+i NEXT GET (0,0)-(15,15),h3% RESTORE rohr x=0 FOR f=12 TO 16 READ i LINE (0,15)-(15-x,x),f,bf x=x+i NEXT RESTORE rohr2 FOR f=16 TO 12 STEP -1 READ i LINE (0,15)-(15-x,x),f,bf x=x+i NEXT GET (0,0)-(15,15),h4% RESTORE rohr x=0 FOR f=12 TO 16 READ i LINE (0,0)-(15-x,15-x),f,bf x=x+i NEXT RESTORE rohr2 FOR f=16 TO 12 STEP -1 READ i LINE (0,0)-(15-x,15-x),f,bf x=x+i NEXT GET (0,0)-(15,15),h5% rohr: DATA 2,2,2,1,1 rohr2: DATA 1,1,2,2,2 LINE (0,0)-(15,15),8,bf FOR i=1 TO 4 CIRCLE (8,8),5-i,3+i,,,1 PAINT (8,8),3+i NEXT GET (0,0)-(15,15),h11% 'Angreifer 1 und 2 LINE (0,0)-(15,15),30,bf FOR k=0 TO 1 RESTORE kugeln FOR i=0 TO 4 READ x CIRCLE (8,8),x,20+i+k*5,,,1 PAINT (8,8),20+i+k*5 NEXT IF k=0 THEN GET (0,0)-(15,15),h6% IF k=1 THEN GET (0,0)-(15,15),h7% NEXT kugeln: DATA 7,6,4,2,1 'Punkte LINE (0,0)-(15,15),8,bf GET (0,0)-(15,15),h12% 'spieler RESTORE spielfig FOR i=2 TO 7 FOR j=0 TO 5 READ x IF x=0 THEN x=30 :ELSE x=x+16 PSET (8+j,i),x:PSET (7-j,i),x PSET (8+j,15-i),x:PSET (7-j,15-i),x NEXT NEXT GET (0,0)-(15,15),h8% spielfig: DATA 1,0,0,0,0,0,2,1,0,0,0,0 DATA 3,2,1,0,0,0,3,2,1,1,0,0 DATA 3,3,2,2,1,1,1,3,3,3,2,2 'Spielfelder 0-3 werden definiert 'erweiterbar durch Ändern von smax '0-vert, 1-hor, 2-li ob, 3-li un '4-re ob, 5-re un, 6-Punkt 'In den Zeilen 0 und 13 jedes 'Schirmes muss als letzte Zahl eine '6 stehen, ebenso als 1. Zahl in 'Zeile 9! Dort stehen Angreifer, bzw. 'Spielerfigur. Es sind auch Wege 'von diesen Positionen offenzuhalten! 'Schirmgröße: 18*14 smax=3 DIM s$(smax,13) s$(0,0)="606666666666666666" s$(0,1)="606211161111161146" s$(0,2)="606066666666666606" s$(0,3)="606066611114660606" s$(0,4)="606314666660615666" s$(0,5)="606660621460666661" s$(0,6)="606060606066661466" s$(0,7)="606060666662166346" s$(0,8)="631115611160606606" s$(0,9)="666666666660631606" s$(0,10)="621111111660666606" s$(0,11)="606666666660660606" s$(0,12)="606111111166615606" s$(0,13)="606666666660666666" s$(1,0)="666666666666066666" s$(1,1)="666066666666066211" s$(1,2)="606066611466066066" s$(1,3)="156066666311566066" s$(1,4)="666311466666666666" s$(1,5)="166666066666146111" s$(1,6)="666666066666606666" s$(1,7)="111146066666606066" s$(1,8)="666606311111156066" s$(1,9)="666606666666666311" s$(1,10)="606606661114666666" s$(1,11)="631156066660621146" s$(1,12)="666666066660606606" s$(1,13)="611111566115666606" s$(2,0)="666666666666666666" s$(2,1)="621111116611111146" s$(2,2)="606666666666666606" s$(2,3)="606211116611114606" s$(2,4)="606066666666660606" s$(2,5)="606062116611160606" s$(2,6)="606660666666660666" s$(2,7)="666066666666066606" s$(2,8)="606061116611560606" s$(2,9)="606066666666660606" s$(2,10)="606311116611115606" s$(2,11)="606666666666666606" s$(2,12)="631111116611111156" s$(2,13)="666666666666666666" s$(3,0)="666666666666666666" s$(3,1)="614611166211161616" s$(3,2)="660666666066666066" s$(3,3)="615606666666666666" s$(3,4)="666666611116111166" s$(3,5)="661111666666666666" s$(3,6)="166666621146111166" s$(3,7)="661111631156666661" s$(3,8)="666666666666111166" s$(3,9)="661111611116666666" s$(3,10)="666666666666606216" s$(3,11)="660666660666666066" s$(3,12)="616161115661116316" s$(3,13)="666666666666666666" RETURN zeichnen: COLOR ,11:CLS PUT (0,0),h2%,PSET FOR x=16 TO 288 STEP 16 PUT (x,0),h1%,PSET NEXT max=-1 PUT (304,0),h4%,PSET FOR y=1 TO 14 PUT (0,y*16),h0%,PSET FOR x=1 TO 18 z=VAL(MID$(s$(s,y-1),x,1)) IF z=6 THEN PUT (x*16,y*16),h11%,PSET:max=max+1 :ELSE IF z=0 THEN PUT (x*16,y*16),h0%,PSET :ELSE IF z=1 THEN PUT (x*16,y*16),h1%,PSET :ELSE IF z=2 THEN PUT (x*16,y*16),h2%,PSET :ELSE IF z=3 THEN PUT (x*16,y*16),h3%,PSET :ELSE IF z=4 THEN PUT (x*16,y*16),h4%,PSET :ELSE IF z=5 THEN PUT (x*16,y*16),h5%,PSET NEXT x PUT (304,y*16),h0%,PSET NEXT y PUT (0,240),h3%,PSET FOR x=16 TO 288 STEP 16 PUT (x,240),h1%,PSET NEXT PUT (304,240),h5%,PSET RETURN SUB welle STATIC SHARED pi DIM form%(255) pi2=2*pi/255 FOR i=0 TO 255 form%(i)=SIN(pi2*i)+SIN(6*pi2*i)+SIN(0.33*pi2*i) form%(i)=((form%(i)+SIN(3*pi2*i))/4)*127 NEXT WAVE 0,form% ERASE form% END SUB musik: IF music=0 THEN RETURN start=start+12 IF start>13 THEN start=1:RESTORE musik SOUND WAIT FOR ton=start TO start+11 READ f IF f>1000 THEN f=f-1000:l=10.6 :ELSE l=4.55 SOUND f,l,255,0 NEXT SOUND RESUME RETURN DATA 1130.8,146.8,164.8,174.6,196 DATA 164.8,1196,220,174.6,1220,196 DATA 164.8,1196,130.8,146.8,164.8,174.6,196 DATA 164.8,1196,174.6,164.8,146.8,1130.8 menue: m=MENU(0):mm=MENU(1) IF m=2 AND mm=3 THEN music=0 IF m=2 AND mm=2 THEN music=1 RETURN SUB bild STATIC SHARED h6%(),h7%(),h8%(),h11%() CLS DIM a$(4) a$(0)="1110222010002000222" a$(1)="1010202010002000200" a$(2)="1110222010002000222" a$(3)="1010202010002000002" a$(4)="1110202011102220222" FOR y=0 TO 4 FOR x=1 TO 19 i=VAL(MID$(a$(y),x,1)) IF i=0 THEN GOTO loop9 IF i=1 THEN PUT ((x-1)*16,y*16),h6%,PSET IF i=2 THEN PUT ((x-1)*16,y*16),h7%,PSET loop9: NEXT NEXT FOR x=0 TO 32 SCROLL (0,0)-(320,112),0,1 NEXT FOR y=1 TO 3 FOR x=12 TO 16 STEP 0.5 COLOR INT(x) LOCATE 2,12:PRINT "AGRESSIVE" NEXT NEXT COLOR 21:LOCATE 15,9:PRINT "by M. Schönborn" PUT (16,144),h8%,PSET PUT (16,176),h11%,PSET COLOR 26:LOCATE 17,6:PRINT "Spielfigur" LOCATE 21,6:PRINT "Pillen zum Fressen" COLOR 31:LOCATE 23,1:PRINT "Joystick in Port 2!" LOCATE 26,8:PRINT "Start mit > S "S" SOUND RND*100+100,1,255,3 j$=UCASE$(INKEY$) WEND END SUB